package com.sojson.controller.po.param.verify;

import java.sql.SQLException;

import com.sojson.entity.po.Menu;
import com.sojson.enums.core.EMenuContentType;
import com.sojson.enums.core.EMenuIsCache;
import com.sojson.enums.core.EMenuIsFrame;
import com.sojson.enums.core.EMenuVisible;
import com.sojson.result.Result;
import com.sojson.util.StringUtil;

/**
 * 颈部菜单表控制器参数验证
 * 
 * @author liu
 * @date 2021-03-16
 */
public class MenuParamVerify {

    /**
     * 单条插入
     * 
     * @param menu
     * @return
     * @throws SQLException
     */
    public static Result<?> insert(Menu menu) {
        if (StringUtil.isBlank(menu.getName())) {
            return Result.fail("菜单名称不能为空！");
        }
        if (StringUtil.isBlank(menu.getType())) {
            return Result.fail("菜单类型不能为空！");
        }
        if (StringUtil.isBlank(menu.getEnvironment())) {
            return Result.fail("菜单环境不能为空！");
        }
        Integer isFrame = menu.getIsFrame();
        if (StringUtil.isBlank(isFrame)) {
            menu.setIsFrame(EMenuIsFrame.NO.getCode());
            isFrame = menu.getIsFrame();
        }
        int code = EMenuContentType.URL.getCode();
        if (StringUtil.isBlank(menu.getContentType())) {
            menu.setContentType(code);
        }
        if (isFrame == EMenuIsFrame.NO.getCode()) {
            Integer contentType = menu.getContentType();
            if (contentType != code) {
                if (StringUtil.isBlank(menu.getComponent())) {
                    return Result.fail("路由ID不能为空！");
                }
            }
        }
        if (StringUtil.isBlank(menu.getParentId())) {
            menu.setParentId(0);
        }
        if (StringUtil.isBlank(menu.getSortNum())) {
            menu.setSortNum(100);
        }
        if (StringUtil.isBlank(menu.getPath())) {
            menu.setPath("#");
        }
        if (StringUtil.isBlank(menu.getIsCache())) {
            menu.setIsCache(EMenuIsCache.YES.getCode());
        }
        if (StringUtil.isBlank(menu.getVisible())) {
            menu.setVisible(EMenuVisible.YES.getCode());
        }
        if (StringUtil.isBlank(menu.getIcon())) {
            menu.setIcon("#");
        }

        return Result.success();
    }

    /**
     * 通过id更新(局部更新)
     * 
     * @param menu
     * @return
     * @throws SQLException
     */
    public static Result<?> updatePartialById(Menu menu) {
        if (StringUtil.isBlank(menu.getId())) {
            return Result.fail("ID不能为空！");
        }
        if (menu.getId() == menu.getParentId().intValue()) {
            return Result.fail("上级菜单不能选择自己！");
        }

        return Result.success();
    }

}